<?php
if ( count( get_included_files() ) == 1 ) die( '---' );

class ElementGrille
{
	var $element_id;
	
	var $grille_id;	
	
	var $nom;
	
	var $type;
	
	var $ordre;
	
	var $type_reponse;
	
	var $validation_auto;

	var $elementFicheMere;

	var $table;
	
	var $table_droits_edition;

	
	// Constructeur
	function ElementGrille() 
    {
    	$this->element_id = -1;
    	$this->grille_id = $grille_id;
    	$this->nom = $nom;
    	$this->type = $type;
	$this->ordre = $ordre;
	$this->type_reponse = $type_reponse;
	$this->validation_auto = $validation_auto;
	$this->elementFicheMere = $elementFicheMere;
	
	global $tables;    	
	$this->table = $tables['PFLelement_grille'];
	$this->table_droits_edition = $tables['PFLdroits_edition'];
    }
    
    // Load 
    function load($element_id)
    {
    	$sql = "SELECT element_id, grille_id,nom, type, ordre, type_reponse, validation_auto, elementFicheMere
		FROM `".$this->table."`
		WHERE element_id = '".$element_id."'";
	$data = claro_sql_query_get_single_row($sql);

	   if( !empty($data) )
	   {
	   	$this->element_id     	= $data['element_id'];
	   	$this->grille_id      	= $data['grille_id'];
	   	$this->nom      	= $data['nom'];
	   	$this->type 		= $data['type'];
	   	$this->ordre	   	= $data['ordre'];
	   	$this->type_reponse	= $data['type_reponse'];
	   	$this->validation_auto  = $data['validation_auto'];  
		$this->elementFicheMere = $data['elementFicheMere'];
	   	
	   	return true;
	   }
	   else
	   return false;
    }
    
    
    // Save 
    function save()  
    {
    	if( $this->element_id == -1 )
    	{
    		$sql = "INSERT INTO `".$this->table."` 
					  SET grille_id = ".$this->grille_id.",
							nom = '".$this->nom."',
							type = '".$this->type."',
							ordre = '".$this->ordre."',
							type_reponse = '".$this->type_reponse."',
							validation_auto = '".$this->validation_auto."',
							elementFicheMere = '".$this->elementFicheMere."'
							";
			// execute the creation query and get id of inserted assignment
		    $insertedId = claro_sql_query_insert_id($sql);

		    if( $insertedId )
		    {
		    	$this->element_id = (int) $insertedId;

		      return $this->element_id;
		    }
		    else
		    {
		        return false;
		    }
    	}
    	else
    	{
    		$sql = "UPDATE `".$this->table."` 
					   SET grille_id = ".$this->grille_id.",
							nom = '".addslashes($this->nom)."',
							type = '".$this->type."',
							ordre = '".$this->ordre."',
							type_reponse = '".$this->type_reponse."',
							validation_auto = '".$this->validation_auto."',
							elementFicheMere = '".$this->elementFicheMere."'
					  WHERE element_id = ".$this->element_id;
			// execute and return main query
		    if( claro_sql_query($sql) )
		    {
		    	return $this->element_id;
		    }
		    else
		    {
		    	return false;
		    }
    	}
    }
    
    function delete()
	 {
	 	$sql = "DELETE FROM `".$this->table."` WHERE element_id = ".$this->element_id;
	 	if( claro_sql_query($sql) == false ) 
	 	return false;
			
		$this->element_id = -1;
		return true;
	 }
	 
	function chercherListeElements ()
	{
		$sql_search = "SELECT element_id
				FROM `".$this->table."`
				WHERE grille_id = '".$this->grille_id."'
				ORDER BY type, ordre";

		return claro_sql_query_fetch_all_rows($sql_search);
	}
	
	
	// Recherche si c'est la ligne ou la colonne qui impose un type
	function chercherDeterminateur()
	{
		$sql = "SELECT DISTINCT type 
				  FROM `".$this->table."`
				  WHERE type_reponse != ''
				  AND grille_id = '".$this->grille_id."'";	

		$type = claro_sql_query_get_single_row($sql);

		return $type['type'];
	}
	
	// Recherche de l'ordre d'un nouvel element
	function chercheNouvelOrdre()
	{
		$sql = "SELECT ordre
				  FROM `".$this->table."`
				  WHERE grille_id = '".$this->grille_id."'
				  AND type = ".$this->type."
				  ORDER BY ordre DESC
				  LIMIT 0,1";
		$max_ordre = claro_sql_query_get_single_row($sql);
		return $max_ordre['ordre']+1;
	}
	
	// Cherche l'id d'un élément en fonction de son ordre
	function chercherElementParOrdre($nouvel_ordre)
	{
		$sql = "SELECT element_id
				  FROM `".$this->table."`
				  WHERE grille_id = '".$this->grille_id."'
				  AND type = ".$this->type."
				  AND ordre = ".$nouvel_ordre;
		$element_id = claro_sql_query_get_single_row($sql);
		return $element_id['element_id'];	
	}
	
	// Cherche les utilisateurs ayant le droit de saisir
	function chercherDroitsEdition()
	{
		$sql = "SELECT user_id
				  FROM `".$this->table_droits_edition."`
				  WHERE element_id = ".$this->element_id;
		return claro_sql_query_fetch_all_rows($sql);
	}
	
	
	// Enlève les évaluateurs
	function viderListeEvaluateurs()
	{
		$sql = "DELETE FROM `".$this->table_droits_edition."`
				  WHERE element_id = ".$this->element_id;
		return claro_sql_query($sql);
	}
	
	// Ajoute un évaluateur
	function ajouterEvaluateur($userId)
	{
		$sql = "INSERT INTO `".$this->table_droits_edition."`
				  SET element_id = ".$this->element_id.",
				  		user_id = ".$userId;
		return claro_sql_query($sql);
	}
	
	// Met à jour l'ordre des éléments en cas de suppression
	function majOrdre()
	{
		$sql = "UPDATE `".$this->table."` 
					SET ordre = ordre-1
					WHERE ordre > ".$this->ordre."
					AND type = ".$this->type;
		return claro_sql_query($sql);
	}
	
	/**
     * get id
     *
     * @author Pierre Raynaud
     * @return int
     */
	function getElementId()
	{
		return (int) $this->element_id;
	}
	
	/**
     * get grille_id
     *
     * @author Pierre Raynaud
     * @return int
     */
	function getGrilleId()
	{
		return (int) $this->grille_id;
	}
	
	/**
     * set grille_id
     *
     * @author Pierre Raynaud
     * @param int $value
     */
	function setGrilleId($value)
	{
		$this->grille_id = $value;
	}
	
	/**
     * get nom
     *
     * @author Pierre Raynaud
     * @return string
     */
	function getNom()
	{
		return $this->nom;
	}
	
	/**
     * set Nom
     *
     * @author Pierre Raynaud
     * @param string $value
     */
	function setNom($value)
	{
		$this->nom = trim($value);
	}
	
	/**
     * get type
     *
     * @author Pierre Raynaud
     * @return string
     */
	function getType()
	{
		return (int) $this->type;
	}
	
	/**
     * set type
     *
     * @author Pierre Raynaud
     * @param string $value
     */
	function setType($value)
	{
		$this->type = $value;
	}
	
	/**
     * get ordre
     *
     * @author Pierre Raynaud
     * @return int
     */
	function getOrdre()
	{
		return (int) $this->ordre;
	}
	
	/**
     * set ordre
     *
     * @author Pierre Raynaud
     * @param int $value
     */
	function setOrdre($value)
	{
		$this->ordre = $value;
	}
	
	/**
     * get type_reponse
     *
     * @author Pierre Raynaud
     * @return string
     */
	function getTypeReponse()
	{
		return $this->type_reponse;
	}
	
	/**
     * set type_reponse
     *
     * @author Pierre Raynaud
     * @param string $value
     */
	function setTypeReponse($value)
	{
		$this->type_reponse = trim($value);
	}
	
	/**
     * get validation_auto
     *
     * @author Pierre Raynaud
     * @return int
     */
	function getValidationAuto()
	{
		return (int) $this->validation_auto;
	}
	
	/**
     * set validation_auto
     *
     * @author Pierre Raynaud
     * @param int $value
     */
	function setValidationAuto($value)
	{
		$this->validation_auto = $value;
	}

	/**
     * get elementFicheMere
     *
     * @author Pierre Raynaud
     * @return int
     */
	function getElementFicheMere()
	{
		return (int) $this->elementFicheMere;
	}
	
	/**
     * set elementFicheMere
     *
     * @author Pierre Raynaud
     * @param int $value
     */
	function setElementFicheMere($value)
	{
		$this->elementFicheMere = $value;
	}
}
?>
